package modele.Batiment;

import modele.Joueur;
import modele.Position;
import modele.Unite.UniteAttaquante;

public abstract class BatimentDefensif extends Batiment {
	private static final long serialVersionUID = 6339046414102650481L;
	protected int puissanceAttaque;
	protected int portee;
	protected int tempsAttenteEntreCoups;

	public BatimentDefensif(String nom, int pointsDeVie, int niveau, int coutConstructionOr, int coutConstructionElixir, int tempsConstruction, int longueurCote, Position position, int puissanceAttaque, int portee, int tempsAttenteEntreCoups, Joueur joueur) {
		super(nom, pointsDeVie, niveau, coutConstructionOr, coutConstructionElixir, tempsConstruction, longueurCote, position, joueur);
	
		assert puissanceAttaque >= 0;
		assert portee >= 0;
		assert tempsAttenteEntreCoups >= 0;
		this.puissanceAttaque = puissanceAttaque;
		this.portee = portee;
		this.tempsAttenteEntreCoups = tempsAttenteEntreCoups;
	}
	
	/**
	 * augmente la puissance d'attaque de 5%
	 */
	@Override
	protected void augmenterNiveauSpecifique()
	{
		puissanceAttaque = puissanceAttaque + (puissanceAttaque*5/100);
	}
	
	public void attaquerUnite (UniteAttaquante cible) {
		cible.recevoirDegats(puissanceAttaque);
	}
	
	public int getPortee()
	{
		return portee;
	}
	
	public int getPuissanceAttaque()
	{
		return puissanceAttaque;
	}
	
	
	public String resumerEtatSpecifique()
	{
		return new String("puissance d'attaque : "+puissanceAttaque+"\n portee : "+portee);
	}
	
}




